package com.fireworks.geoevents.controllers;

import java.util.ArrayList;
import java.util.Date;

import com.fireworks.geoevents.entities.Calendar;
import com.fireworks.geoevents.entities.Event;
import com.fireworks.geoevents.entities.Location;

public class EventManager {

	private Calendar calendar;
	AlertManager alertManager;
	ConfigurationManager configurationManager;
	FavoritesManager favoritesManager;
	
	public EventManager() {
		setCalendar(new Calendar());
	}
	
	/**
	 * Devuelve los n eventos mas proximos
	 *  
	 * @param n 
	 * @return
	 */
	public ArrayList<Event> getCurrentEvents(int n) {
		return null;
	}
	
	// Devuelve el numero total de eventos
	/*
	 * 
	 */
	public int getEventsSize() {
		return 0;
	}
	
	/** 
	 * Devuelve los eventos en un dia dado
	 * 
	 * @param date
	 * @return
	 */
	public ArrayList<Event> getEventsByDate(Date date) {
		return null;
	}
	
	/** 
	 * Devuelve los eventos en l radio de una ubicacion
	 * 
	 * @param location
	 * @return
	 */
	public ArrayList<Event> getEventsByLocation(Location location) {
		return null;
	}
	
	/** 
	 * Busca los eventos dependiendo de los parametros de entrada, si un valor ingresa con valor null no se considera para la busqueda
	 * 
	 * @param initialDate
	 * @param finalDate
	 * @param location
	 * @param title
	 * @param type
	 * @return
	 */
	public ArrayList<Event> searchEvents(Date initialDate, Date finalDate, Location location, String title, String type) {
		return null;
	}
	
	/** 
	 * Guarda un evento dado
	 * 
	 * @param event
	 */
	public void addEvent(Event event) {
		
	}
	
	/** 
	 * Modifica el evento
	 * 
	 * @param event
	 */
	public void modifyEvent(Event event) {
		
	}
	
	/** 
	 * Borra un evento dado, el evento que ingresa debe tener el ingresado el id del evento
	 * 
	 * @param event
	 */
	public void removeEvent(Event event) {
		
	}

	/**
	 * 
	 * @return
	 */
	public Calendar getCalendar() {
		return calendar;
	}

	/**
	 * 
	 * @param calendar
	 */
	public void setCalendar(Calendar calendar) {
		this.calendar = calendar;
	}
	
}
